#include <stdio.h>
#include <stdlib.h>
#define MALLOC(x) (x*)malloc(sizeof(x))
typedef struct Node_Struct {
    
    int data;
    struct Node_Struct *next;
} node;
typedef node* pnode;


pnode addnode(pnode list,int NewData);



int main(){
    node* list_1;
    list_1=MALLOC(node);
    list_1->next=NULL;
    int input=0;
/* get input, and build list */
    do {
        scanf("%d",&input);
        if (input!=-1)
            list_1=addnode(list_1,input);
        else
            break;
    }while(1);
    
/* print the reverse*/
    do{
        printf("%d ",list_1->data);
        list_1=list_1->next;
        
    }while(list_1->next);
    
    
/* free list*/
    pnode next;
    while(list_1){
        next=list_1->next;
        
        free(list_1);
        list_1=next;
        
    }

}


pnode addnode(pnode list,int NewData){
    pnode NewNode=MALLOC(node);
    NewNode->data=NewData;
    NewNode->next=list;
    return NewNode;

}
